

/**
 * webpack里如何加载一个图片
 * 1.生成一个文件名 [hash:8].[ext]=> sfsdfdsf.jpg
 * 2.向输出目录，比如说dist目录写入一个文件 sfsdfdsf.jpg
 * 3.返回一段模块化的JS脚本，JS脚本会导出这个新的路径文件名
 */
/**
 * getOptions 获取loader中options
 * interpolateName 把名字的模板转译成名字
 */
 const {getOptions, interpolateName}  = require('loader-utils');
 const mime = require("mime");
function loader(source) {
   let options = getOptions(this)||{}
   let { limit,fallback = 'file-loader'} = options
   if(limit){
       limit = parseInt(limit,10)
   }
   //xxx.jpg => image/jpg ; xxx.png => image/png
  const mimeType = mime.getType(this.resourcePath);
  if(!limit||source.length < limit){
    let base64Str = `data:${mimeType};base64,${source.toString("base64")}`;
    return `module.exports = ${JSON.stringify(base64Str)}`;
  }else{
    //require是node加载模块的方法，跟webpack没有关系。
    let fileLoader = require(fallback);//肯定 是第三方的
    return fileLoader.call(this, source);
  }
}
//raw原生的
/**
 * 在默认情况下loader得到的内容是一个字符串( true得到的是Buffer,false得到的字符串 )
 * loader.raw = true 的话说明告诉 webpack不要把源文件内容给我转成字符串，保留buffer就可以了
 */
loader.raw = true;
module.exports = loader